/**
 *赛事相关接口 Match Controller
 **/


import {CommonPageVo} from "../";

/**
 * 动态表单信息
 **/

export class MatchSignupFieldsResp {
  boxValue ?: Array<string>;
  fieldText ?: string;  // 自定义项的名称
  fieldType ?: number; // 1：输入框 2：选择框
  fieldValues ?: string;  // {text: string}
  id ?: number;
  matchId ?: number;
  order ?: string;
  sort ?: string;
}

/**
 * 团体报名信息暂存
 **/

export class groupInfoVO {
  join: boolean;
  groupId: string; // 群ID ,
  groupName: string; // 群名称 ,
  iconUrl: string; // 群图标 ,
  createUserId: string; // 创建者ID ,
  createUserName: string; // 创建者昵称 ,
  joinMode: string; // 加入群方式 ,
  appImgUrl: string; // 群认证图标 ,
  cateName: string; // 群类型名称 ,
  ipCateId: string; // 群类型 ,
  maxMemberNum: string; // 群最大成员数 ,
  memberNum: string; // 群现有成员数 ,
  orgUserId: string; // 群超级管理员ID
  isJoin: boolean; // 是否已加入
}

/**
 * 赛事团体报名 上传文件返回数据
 **/

export class UserAlbumFile {
  contentId ?: number; // 内容id ,
  createTime ?: string; // 创建时间 ,
  feedId ?: number; // 动态id ,
  fileId ?: number; // 资源文件id ,
  fileName ?: string; // 资源文件名 ,
  fileNameHD ?: string; // 高清,不需要上报 ,
  fileNameSD ?: string; // 标清,不需要上报 ,
  fileSize ?: number; // 视频文件大小 必填(单位字节) ,
  liveId ?: number; // 直播ID,不需要上报 ,
  order ?: string;
  playTime ?: number; // 视频时长 必填(格式 hh:mm:ss或mm:ss字符串),2017-05-10类型改为int ,
  sort ?: string;
  type ?: number; // 文件类型：2,图片;3,视频 ,
  userId ?: string; // 用户id
}

export class MatchTeamSignResp {
  free: boolean; //
  signId: number; // 赛事报名id
  skuCode: string; // 商品code
  status: number; // 订单状态
}

export class MatchSignResp {
  orderStatus: number; // 订单状态,
  orderNum?: number;
}

/**
 *赛事相关接口 Match Controller
 **/

export class MatchGroupMappingResp {
  createTime: string; // 创建时间
  goodsCode: string; // 商品编码（暂时存留）
  groupMoney: number; // 报名组别费用
  groupName: string; // 赛事组别名称
  groupNumber: number; // 数量(件)
  groupType: number; // 赛事组别类别
  groupTypeStr: string; // 赛事组别
  id: number; // 主键id
  matchId: number; // 赛事id
  order: string;
  skuCode: string; // sku编码
  sort: string;
  updateTime: string; // 更新时间
}

export class MatchSignFieldResp {
  idNo ?: string; // 证件号 ,
  matchSignupFields ?: Array<MatchSignupFieldsResp>;  // 赛事报名动态字段 ,
  order ?: string;
  phone ?: string; // 手机号 ,
  sex ?: number; // 性别 ,
  sort ?: string; //
  userName ?: string; // 用户姓名
}


export class DictCommon {
  dictId: number; // 序号 自增
  dictType: number; // 字典类型
  fieldName: string; // 描述
  fieldValue: number; // 列值
  iconUrl: string; // 图标路径
  order: string;
  parentValue: number; // 父级列值
  selected: number; // 是否选中
  sort: string;
  version: number; // 版本
}


export class MatchResp {
  appImgUrl: string; // 认证图标地址
  appImgtxtUrl: string; // 认证图文地址
  behalfSign: number; // 能否替报名 0:否 1:是
  behalfSmallScore: number; // 是否需要录入每局比分 0:否 1:是
  behalfTrinomen: number; // 是否需要三四名决赛 0:否 1:是
  channelsRound: number; // 摇号轮数--跑步赛事专用
  cityId: number; // 所在市id（关联公用省市区数据字典表dict_area中AREA_ID字段）
  cityStr: string; // 所在市
  clothingSize: number; // 是否需要用户填写衣服尺寸（0：不需要，1：需要）--默认0:跑步)
  contactWay: string; // 联系方式
  corganizersList: Array<string>; // 协办单位
  cost: number; // 是否需要支付
  createTime: string; // 创建时间--系统生成
  creatorId: string; // 赛事创建者ID--系统生成
  currentLottery: number; // 当前摇号轮数--系统生成--默认0:跑步)
  deleteFlag: string; // 删除标识 N 否，Y是
  drawsState: number; // 签表状态 0：未生成，1：草稿：2已生成,3已创建赛程--默认0
  emergencyContact: number; // 是否需要用户填写紧急联系人（0：不需要，1：需要）--默认0:跑步)
  endTime: string; // 比赛结束时间--不能为空、必须大于比赛开始时间
  express: number; // 是否需要快递参赛包（0：不需要，1：需要）--默认0:跑步)
  formatNumberType: number; // 赛制人数类型（关联公用数据字典表dict_common中field_value字段）--球类专用
  formatNumberTypeStr: string; // 赛制人数
  fullAddress: string; // 详细地址
  goodsCode: string; // 商品编号
  groupTypeList: Array<MatchGroupMappingResp>; // 赛事组别
  iconUrl: string; // 用户头像
  id: number; // 赛事id
  insuranced: number; // 是否购买保险（0：不需要，1：需要）--默认0
  isTeam: number; // 参赛加入类型 0个人 1团体
  joinNumber: number; // 参赛者数量
  joinRequire: number; // 参赛者要求字典数据
  joinRequireStr: string; // 参赛者要求
  lastMenderId: string; // 赛事修改者ID--系统生成
  linkMan: string; // 联系人
  logoUrl: string; // 赛事logo图片地址(取图集第一张)
  lottery: number; // 是否需要摇号（0：不需要，1：需要）--默认0:跑步)
  matchChannelsList: Array<MatchChannelsVO>; // 渠道
  matchDetails: string; // 赛事详情
  matchFormat: number; // 赛制（关联公用数据字典表dict_common中field_value字段）
  matchFormatDish: number; // 赛制-盘（关联公用数据字典表dict_common中field_value字段）
  matchFormatDishStr: string; // 赛制--盘
  matchFormatPoint: number; // 赛制-分（关联公用数据字典表dict_common中field_value字段）
  matchFormatPointStr: string; // 赛制--分
  matchFormatPrecedence: number; // 赛制-占先（关联公用数据字典表dict_common中field_value字段）
  matchFormatPrecedenceStr: string; // 赛制--占先
  matchFormatSet: number; // 赛制-局（关联公用数据字典表dict_common中field_value字段）
  matchFormatSetStr: string; // 赛制--局
  matchFormatStr: string; // 主赛制
  matchImagesList: Array<string>; // 赛事配图
  matchName: string; // 赛事名称
  matchScheduleDone: number; // 赛事赛程是否在比赛结束前就已打完：1是 0否(针对球类)
  matchType: number; // 赛事类型（3001，篮球：3002，羽毛球：3003，网球：3004，乒乓球：3005，跑步：3006）
  matchTypeStr: string; // 赛事类型
  nickName: string; // 用户昵称
  order: string; //
  organizersList: Array<string>; // 承办单位
  payTime: number; // 支付限时（单位小时）
  perOrTeam: number; //
  playerNumber: number; // 每队参与人数--篮球、足球赛事球类团体专用
  provinceId: number; // 所在省id（关联公用省市区数据字典表dict_area中AREA_ID字段）
  provinceStr: string; // 所在省
  remarks: string; // 备注
  signChecked: number; // 报名是否需要审核 0不需要，1需要--默认0
  signEndTime: string; // 报名结束时间--不能为空、必须报名开始时间晚3天
  signStartTime: string; // 报名开始时间--不能为空、必须比当前时间晚2天、必须报名结束时间早3天
  sort: string;
  sponsorsList: Array<string>; // 主办单位
  sportingLevel: number; // 竞技水平（关联公用数据字典表dict_common中field_value字段）--球类专用
  sportingLevelStr: string; // 竞技水平
  startTime: string; // 比赛开始时间--不能为空、必须比报名的结束时间要晚至少24个小时
  status: number; // 赛事状态（0，草稿，1，待审核，2，审核不通过，3，审核通过、4、报名中，5、报名截止，6、进行中，7、已结束,8.提前关闭）--默认0
  updateTime: string; // 修改时间--系统生成
  userId: string; // 赛事创建组织id--系统生成
}

export class MatchChannelsVO {
  channelName: string; // 渠道名称
  channelsGroup: Array<MatchChannelsGroupVO>; // 渠道组别对应的名额数值
}

export class MatchChannelsGroupVO {
  channelsId: number; // 赛事渠道id
  createTime: string; // 创建时间
  groupDes: string; // 赛事组别类型描述
  groupId: number; // MatchGroupMapping关联id
  groupType: number; // 赛事组别类型ID
  id: number; // 主键id
  lotteryNumbers: number; // 摇号名额
  order: string;
  sort: string;
  updateTime: string; // 修改时间
}

export class MatchChartRespVO {
  badmintonPage: CommonPageVo<MatchChartBadmintonRespVO>; // 羽毛球
  basketballPage: CommonPageVo<MatchChartBasketballRespVO>; // 篮球
  footballPage: CommonPageVo<MatchChartFootballRespVO>; // 足球
  groupCount: number; // 对应球类杯赛的分组数量
  matchType: number; // 赛事类型,对应不同的实体
  pingpongPage: CommonPageVo<MatchChartPingpongRespVO>; // 乒乓球
  tennisPage: CommonPageVo<MatchChartTennisRespVO>; // 网球
}

export class MatchChartBadmintonRespVO {
  chartNo: number; // 排名
  countAll: number; // 已比赛场次
  countLost: number; // 负局
  countNet: number; // 净胜局
  countWin: number; // 胜局
  createTime: string; // 创建时间
  groupType: number; // 组别
  iconUrl: string; // 头像
  id: number; // ID
  matchId: number; // 赛事ID
  order: string; //
  point: number; // 积分
  scoreLost: number; // 失分
  scoreNet: number; // 净胜分
  scoreWin: number; // 得分
  signTime: string; // 报名时间
  sort: string; //
  totalLost: number; // 负
  totalWin: number; // 胜
  updateTime: string; // 更新时间
  userId: string; // UserId
  userName: string; // 昵称
}

export class MatchChartBasketballRespVO {
  chartNo: number; // 排名
  consecutiveWin: number; // 连胜连负
  consecutiveWinText: string; //
  countLost: number; // 负场数
  countTotal: number; // 已比赛场次
  countWin: number; // 胜场数
  createTime: string; // 创建时间
  groupType: number; // 组别
  iconUrl: string; // 头像
  id: number; // ID
  matchId: number; // 赛事
  order: string; //
  pointAvgDifference: number; // 平均分差
  pointAvgLost: number; // 平均失分
  pointAvgWin: number; // 平均得分
  pointTotalLost: number; // 总失分
  pointTotalWin: number; // 总得分
  signTime: string; // 报名时间
  sort: string; //
  updateTime: string; // 更新时间
  userId: string; // userId
  userName: string; // 昵称
  winningPercentage: number; // 胜率
  winningPercentageText: string;
}

export class MatchChartFootballRespVO {
  chartNo: number; // 排名
  consecutiveWin: number; // 连胜连负
  countAll: number; // 已比赛场次
  countLost: number; // 负场次
  countTie: number; // 平场次
  countWin: number; // 胜场次
  createTime: string; // 创建时间
  goalDifference: number; // 净胜数
  goalIn: number; // 进球数
  goalLost: number; // 失球数
  groupType: number; // 组别
  iconUrl: string; // 头像
  id: number; // ID
  matchId: number; // 赛事ID
  order: string; //
  point: number; // 积分
  signTime: string; // 报名时间
  sort: string; //
  updateTime: string; // 更新时间
  userId: string; // UserId
  userName: string; // 昵称
}

export class MatchChartPingpongRespVO {
  chartNo: number; // 排名
  countAll: number; // 已比赛场次
  countLost: number; // 负局
  countNet: number; // 净胜局
  countWin: number; // 胜局
  createTime: string; // 创建时间
  groupType: number; // 组别
  iconUrl: string; // 头像
  id: number; // 主键ID
  matchId: number; // 赛事ID
  order: string; //
  point: number; // 积分
  scoreLost: number; // 失分
  scoreNet: number; // 净胜分
  scoreWin: number; // 得分
  signTime: string; // 报名时间
  sort: string; //
  totalLost: number; // 负
  totalWin: number; // 胜
  updateTime: string; // 更新时间
  userId: string; // UserId
  userName: string; // 昵称
}

export class MatchChartTennisRespVO {
  chartNo: number; // 排名
  commingName: string; // 参与人姓名
  countAll: number; // 已比赛场次
  countLost: number; // 负局
  countNet: number; // 净胜局
  countWin: number; // 胜局
  createTime: string; // 创建时间
  groupType: number; // 组别
  iconUrl: string; // 头像
  id: number; // ID
  matchId: number; // 赛事ID
  order: string; //
  point: number; // 积分
  roundLost: number; // 负盘
  roundNet: number; // 净胜盘
  roundWin: number; // 胜盘
  signTime: string; // 报名时间
  sort: string; //
  totalLost: number; // 负
  totalWin: number; // 胜
  updateTime: string; // 更新时间
  userId: string; // UserId
  userName: string; // 昵称
}

export class MatchConstitution {
  constitution: string; // 赛事章程
  createTime: string; // 创建时间
  id: number; // id
  matchId: number; // 赛事id
  order: string; //
  sort: string; //
  status: number; // 章程状态
  updateTime: string; // 修改时间
  userId: string; // 用户id
}

export class MatchInfoResp {
  contactWay: string; // 联系方式
  details: string; // 赛事详情
  endTime: string; // 比赛结束时间
  isTeam: number; // 参赛加入类型 0个人 1团体
  joinRequire: number; // 参赛者要求
  linkMan: string; // 联系人
  mobileDetails: string; // 移动端赛事详情
  playerNumber: number; // 每队参数人数
  signEndTime: string; // 报名结束时间（报名结束时间必须早于比赛开始时间24小时）
  signScheduleResp: SignScheduleResp; // 赛事对应的用户报名详情信息
  signStartTime: string; // 报名开始时间
  startTime: string; // 比赛开始时间
  status: number; // 赛事状态（0，草稿，1，待审核，2，审核不通过，3，审核通过、4、报名中，5、报名截止，6、进行中，7、已结束）
}

export class SignScheduleResp {
  cost: number; // 是否需要支付（0：不需要，1需要）
  currentLottery: number; // 当前摇号轮数
  endTime: string; // 比赛结束时间
  goodsCode: string; // 商品编号
  groupMoney: number; // 订单金额
  groupType: number; // 赛事组别
  groupTypeName: string; // 参赛组别名称
  isTeam: number; // 是否是团体赛 1:是；0:不是
  joinRequire: number; // 参赛者要求
  lottery: number; // 是否需要摇号（0不需要，1需要）
  lotteryRound: number; // 摇号总轮数
  matchId: number; // 赛事id
  matchName: string; // 赛事名称
  matchType: number; // 赛事类型（篮球、足球、羽毛球、网球、乒乓球等）
  orderId: number; // 订单ID
  orderNumber: string; // 订单编号
  payTime: number; // 支付时限
  startTime: string; // 比赛开始时间
  status: number; // 状态（0、邀请，1、报名中，2、同意（已报名），3、拒绝，4、踢出，5、退出，6、已中签，7、待支付，8，已支付，9、支付超时10、支付失败,11未中签）
  updateTime: string; // 更新时间
}

export class MatchInfoHeadResp {
  appImgUrl: string; // 认证图标地址
  appImgtxtUrl: string; // 认证图文地址
  checkChartMatch: boolean; // 在需求上,是否有排名的赛事
  checkMatchSchedule: boolean; // 是否有赛程
  corganizersList: Array<string>; // 协办单位
  cost: number; // 是否需要支付（0：不需要，1需要）
  createTime: string; // 赛事发布时间
  endTime: string; // 比赛结束时间
  goodsCode: string; // 商品编码
  iconUrl: string; // 发布人头像
  isTeam: number; // 参赛加入类型 0个人 1团体
  joinRequire: number; // 参赛者要求
  logoUrl: string; // 赛事logo图片地址(取图集第一张)
  lottery: number; // 是否需要摇号（0不需要，1需要）
  matchFormat: number; // 赛制
  matchName: string; // 赛事名称
  matchType: number; // 赛事类型（篮球、足球、羽毛球、网球、乒乓球等）
  nickName: string; // 发布人昵称
  organizersList: Array<string>; // 承办单位
  scheduleType: number; // 赛程类型 24005淘汰赛 24007积分赛
  signEndTime: string; // 报名结束时间（报名结束时间必须早于比赛开始时间24小时）
  signStartTime: string; // 报名开始时间
  sponsorsList: Array<string>; // 主办单位
  startTime: string; // 比赛开始时间
  status: number; // 赛事状态（0，草稿，1，待审核，2，审核不通过，3，审核通过、4、报名中，5、报名截止，6、进行中，7、已结束）
  userId: string; // 用户Id
}

export class MatchInfoVO {
  content: string; // 公告内容
  createTime: string; // 创建时间
  id: number; // 赛事公告id
  matchId: number; // 关联赛事id
  nickName: string; // 发布者昵称：新增修改时不需填
  status: number; // 状态（0、删除，1、正常）：新增修改时不需填
  title: string; // 公告标题
  top: number; // 是否置顶（0、不置顶，1、置顶）
  topTime: string; // 置顶时间：新增修改时不需填
  updateTime: string; // 修改时间：新增修改时不需填
  userId: string; // 发布者
}

export class MatchScheduleResp {
  bye: boolean; // 是否轮空
  cancelCause: string; // 取消比赛原因
  createTime: string; // 创建时间
  endTime: string; // 比赛结束时间
  grade: number; // 页面轮数
  gradePage: number; // 页面展示的分区数
  gradeSort: number; // 首轮排序
  guestAuthType: number; // 客队类型
  guestColor: string; // 客队球衣代表色
  guestIconUrl: string; // 客队队图片
  guestMatchScheduleId: number; // 上一轮的客队赛事赛程Id（大于1轮使用）
  guestScore: string; // 客队得分
  guestSeedValue: number; // 客队种子号
  guestUserId: string; // 客队id
  guestUserName: string; // 客队名称
  guestUserNameUserId: string; //
  homeScore: string; // 主队得分
  hostAuthType: number; // 主队类型
  hostColor: string; // 主队球衣代表色
  hostIconUrl: string; // 主队图片
  hostMatchScheduleId: number; // 上一轮的主队赛事赛程Id（大于1轮使用）
  hostSeedValue: number; // 主队种子号
  hostUserId: string; // 主队id
  hostUserName: string; // 主队名称
  hostUserNameUserId: string; //
  id: number; // 主键id
  latitude: number; // 场地纬度
  longitude: number; // 场地经度
  matchFormat: number; //
  matchId: number; // 赛事id
  matchType: number; // 赛事类型（篮球、足球、羽毛球、网球、乒乓球等）
  order: string; //
  place: string; // 比赛场地
  placeNumber: string; // 场地编号
  raceDate: string; //
  raceTime: string; //
  remark: string; // 备注
  result: number; // 比赛结果 0：未出, 1：主队胜利，2：客队胜利，3：主队弃权，4：客队弃权，5双方打平）
  sort: string; //
  startTime: string; // 比赛开始时间
  status: number; // 状态（-1导入未确认,0：初始化（2轮以上赛事默认使用），1：待比赛（1轮默认代使用或者2轮以上队伍，上轮队伍晋级或参赛者被踢初比赛无结果），2：已结束，3：延迟比赛，4：取消比赛，5：轮空，6：弃权)
  stridePage: boolean; // 是否跨轮标志,为APP提交效率
  updateTime: string; // 更新时间
  vs: string;
  workers: Array<MatchWorkers>; // 工作人员
}

export class MatchWorkers {
  createTime: string; // 创建时间
  id: number;
  isDefault: number; // 是否默认 0：是 1否
  matchScheduleId: number; // 赛程表ID
  updateTime: string; // 更新时间
  workName: string; // 工作人员姓名
  workPost: string; // 工作人员职位
}

export class MatchConditionScreenRespVO {
  matchFormatTypes: Array<MatchScreenFormatRespVO>; // 赛制类型
  matchIpRecoms: Array<MatchIpRecom>; // 赛事品牌
  matchStatus: Array<MatchStatusScreenRespVO>;
}

export class MatchScreenFormatRespVO {
  formatName: string; // 赛制名称
  formatType: Array<number>; // 赛制编码集合
}

export class MatchIpRecom {
  firstLetter: string;
  matchCount: number;
  nickName: string;
  operateTime: string;
  operatorId: number;
  order: string;
  sort: string;
  userId: string;
}

export class MatchStatusScreenRespVO {
  name: string; // 状态名称 3,4,5,6,7,8 全部 3:预热中 4:报名中 5:报名截止 6:进行中 7,8:已结束
  status: string; // 状态码 3,4,5,6,7,8 全部 3:预热中 4:报名中 5:报名截止 6:进行中 7,8:已结束
}


export class TeamSignCheckVO {
  existsClub: boolean; // 名下是否存在俱乐部
  matchId: number; // 赛事id
  members: Array<TeamMemberVO>; // 俱乐部成员
  minParticipants: number; // 最小参赛人数
  needSwitch: boolean; // 是否需要切换账号
  orderNumber: string; // 待支付订单号
  orgId: number; // 俱乐部id
}

export class TeamMemberVO {
  authStatus: number; // 认证状态
  iconUrl: string; // 用户图像URL
  id: number; //
  infoCompleted: boolean; // 用户信息是否完善
  nickName: string; // 用户昵称
  userId: string; // 用户id
}

export class MatchIpSignTeamResp {
  birthday: string; // 出生日期
  commingName: string; // 参与人姓名
  createTime: string; // 创建时间
  height: number; // 身高
  id: number; // 主键
  idNo: string; // 身份证号码
  linkPhone: string; // 手机号码
  matchId: number; // 赛事id
  matchIpSignExts: Array<MatchIpSignExt>; // 报名动态字段信息
  nickName: string; // 昵称
  orgUserId: string; // 组织id
  sex: number; // 性别
  sexName: string; // 性别名称
  signId: number; // 赛事报名表id
  userAge: number; // 年龄
  userIcon: string; // 用户头像
  userId: string; // 俱乐部成员id
  weight: number; // 体重
}

// 赛事相关接口
export class MatchAppResp {
  endTime: string; // 比赛结束时间 ,
  id: number; // 赛事Id ,
  isTeam: number; // 是否是团体赛 1:是；0:不是 ,
  joinRequire: number; // 参赛者要求 ,
  matchImgApp: string; // 赛事推荐图app ,
  matchName: string; // 赛事名称 ,
  matchType: number; // 赛事类型（篮球、足球、羽毛球、网球、乒乓球等） ,
  matchTypeStr: string; // 赛事类型名称 ,
  startTime: string; // 比赛开始时间 ,
  status: number; // 赛事状态（0，草稿，1，待审核，2，审核不通过，3，审核通过、4、报名中，5、报名截止，6、进行中，7、已结束,8.提前关闭）
}

export class MatchIpSignExt {
  fieldText: string; // 字段文本
  fieldValue: string; // 字段值
  id: number; // 主键标识
  order: string;
  signId: number; // 报名ID
  sort: string;
  userId: string; // 报名用户ID
}
export class MultilayerScoreVOAlone {
  guestScore: number; // 客队比分
  guestUserName: string; // 客队队名
  hostScore: number; // 主队比分
  hostUserName: string; // 主队队名
  roundTypeDesc: string; // 项目
  smallScoreScanVO: Array<SmallScoreScanVO>; // 每场小比分
}

export class SmallScoreScanVO {
  guestScore: number; // 客队每局比分
  hostScore: number; // 主队每局比分
  scoreSort: number; // 序号，第几场
}

export class MultilayerScoreVO {
  guestScore: number; // 客队比分
  hostScore: number; // 主队比分
  mssvo: Array<MultilayerScoreScanVO>; // 场信息
}

export class MultilayerScoreScanVO {
  guestScore: number; // 每场客队比分
  guestUserName: string; // 客队队名
  hostScore: number; // 每场主队比分
  hostUserName: string; // 主队队名
  roundTypeDesc: string; // 项目
  scoreSort: number; // 序号，第几场
  smallScoreScanVO: Array<SmallScoreScanVO>; // 每场小比分
}
